/**
 * Created by Derrick Wang on 2017/10/25.
 * Email: derrickwang12138@gmail.com
 */
//问题：2n个人排队买票，其中n个人持50元，n个人持100元。
//        每张票50元，且一人只买一张票。
//        初始时售票处没有零钱找零。
//        请问这2n个人一共有多少种排队顺序，不至于使售票处找不开钱？
//        题目另一种形式：有n对左括号和右括号，现在问到底有多少中括号合法匹配的组合？

//solution:
//        数学归纳法，找与第一个左括号匹配的右括号在哪儿
//             显然这种数据结构需要一个数组

//key of this solution
//   Cn=C0Cn-1+C1Cn-2+...+Cn-2C1+Cn-1C0=∑CkCn-k(n>=1,k=0，...，n-1)

import java.math.BigInteger;
import java.util.Scanner;


public class catalanNumber {

    private final static int MAX = 7;

    static int catalan(int[] array, int n) {
        int maxIndex = -1;
        if (n <= maxIndex)
            return array[n];
        if (maxIndex == -1) {
            array[0] = 1;
            maxIndex = 0;
        }
        while (maxIndex < n) {
            int i;
            maxIndex++;
            array[maxIndex] = 0;
            for (i = 0; i < maxIndex; i++)
                array[maxIndex] += array[i] * array[maxIndex - 1];
        }
        return array[maxIndex];
    }

    public static void main(String[] args) {
        int n;
        int[] array = new int[8];
        while (true) {
            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            if (n < 0) {
                System.out.println("[error]negative number.\n");
            } else if (n > MAX) {//int ranges from -2^31 to 2^31-1
                System.out.println("[error]larger than 7.int can't store it.\n");
            }
            System.out.println(n + ", " + catalan(array, n));
        }


    }

    private int comb(int n, int m) {//求组合数
        int res;
        if ((m == 0) || (m == n))
            res = 1;
        else {
            int i;
            int numerator = 1, denominator = 1;
            if (m > n - m)
                m = n - m;
            for (i = 1; i <= m; i++)
                denominator *= i;
            for (i = 0; i <= m - 1; i++)
                numerator *= n - i;
            res = numerator / denominator;
        }
        return res;
    }


//    public static void main(String[] args) {
//        // TODO Auto-generated method stub
//        System.out.println("Input n:");
//        Scanner in = new Scanner(System.in);
//        int i = 0, n = 0;
//        BigInteger[] a = new BigInteger[150];
//        a[0] = BigInteger.ONE;
//        for (i = 1; i <= 105; i++)
//            a[i] = a[i - 1].multiply(BigInteger.valueOf(4 * i - 2)).divide(BigInteger.valueOf(i + 1));
//        while (in.hasNextInt()) {
//            n = in.nextInt();
//            if (n == 0) break;
//            BigInteger ans = BigInteger.ONE;
//            for (i = 1; i <= n; i++)
//                ans = ans.multiply(BigInteger.valueOf(i));
//            ans = ans.multiply(a[n]);
//            System.out.println(ans);
//        }
//        in.close();
//    }
}